package app.vendorportal.api;

import app.vendorportal.api.data.response.QueryAddressInfoByWarehouseCodeResponse;
import app.vendorportal.api.data.response.QueryAllWarehouseStatusResponse;
import app.vendorportal.api.data.response.QueryTimeDiffByWarehouseCodeResponse;
import app.vendorportal.api.data.response.QueryWarehouseStatusResponse;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author Bribin
 */
// @API
public interface WarehouseAPIService {

    @RequestMapping(value = "/warehouse/time-diff/{warehouse-code}", method = RequestMethod.GET)
    // @Protected(system = "drop-ship-service", operation = "query-warehouse-time-diff")
    // @Track(warningThresholdInMs = 5000)
    @ResponseBody
    QueryTimeDiffByWarehouseCodeResponse queryTimeDiffByWarehouseCode(@PathVariable("warehouse-code") String warehouseCode);

    @RequestMapping(value = "/warehouse/address-info/{warehouse-code}", method = RequestMethod.GET)
    // @Protected(system = "drop-ship-service", operation = "query-warehouse-address-info")
    // @Track(warningThresholdInMs = 5000)
    @ResponseBody
    QueryAddressInfoByWarehouseCodeResponse queryAddressInfoByWarehouseCode(@PathVariable("warehouse-code") String warehouseCode);

    @RequestMapping(value = "/warehouse/status-all", method = RequestMethod.GET)
    // @Protected(system = "drop-ship-service", operation = "query-warehouse-all-status")
    // @Track(warningThresholdInMs = 10000)
    @ResponseBody
    QueryAllWarehouseStatusResponse queryAllWarehouseStatus();

    @RequestMapping(value = "/warehouse/status/{warehouse-code}", method = RequestMethod.GET)
    // @Protected(system = "drop-ship-service", operation = "query-warehouse-status")
    // @Track(warningThresholdInMs = 5000)
    @ResponseBody
    QueryWarehouseStatusResponse queryWarehouseStatus(@PathVariable("warehouse-code") String warehouseCode);

}
